#include<stdio.h>
#include<windows.h>
float student_average(float score[][5],int i);//第一小题
float subjct_average(float score[][5],int j);//第二小题
void find_max(float score[][5]);//第三小题
void square(float score[][5]);//第四小题

int student,subject,i,j;

int main()
{
	float score[10][5],ave,sub;
	//输入分数
	for(i=0;i<10;i++)
	{
		printf("请分别输入第%d个学生的高数、线代、C语言、大计基、英语成绩：\n",i+1);
		for(j=0;j<5;j++)
		{
			scanf_s("%f",&score[i][j]);
		}
	}

	//输出个人平均分
	for(i=0;i<10;i++)
	{
		ave=student_average(score,i);
		printf("第%d个学生的平均分为：%5.2f\n",i+1,ave);
	}

	//输出每门课平均分
	sub=subjct_average(score,0);
	printf("高数平均分为：%5.2f\n",sub);
	sub=subjct_average(score,1);
	printf("线代平均分为：%5.2f\n",sub);
	sub=subjct_average(score,2);
	printf("C语言平均分为：%5.2f\n",sub);
	sub=subjct_average(score,3);
	printf("大计基平均分为：%5.2f\n",sub);
	sub=subjct_average(score,4);
	printf("英语平均分为：%5.2f\n",sub);

	//找出50个分数中最高分对应的学生和课程
	find_max(score);

	//计算平均分方差
	square(score);

	system("pause");
	return 0;
}

float student_average(float score[][5],int i)//第一小题
{
	float ave;
	ave=0;
	for(j=0;j<5;j++)
	{
		ave=ave+score[i][j];
	}
	ave=ave/5;
	return(ave);
}

float subjct_average(float score[][5],int j)//第二小题
{
	float sub;
	sub=0;
	for(i=0;i<10;i++)
	{
		sub=sub+score[i][j];
	}
	sub=sub/10;
	return(sub);
}

void find_max(float score[][5])//第三小题
{
	int m;
	m=score[0][0];
	for(i=0;i<10;i++)
	{
		for(j=0;j<5;j++)
		{
			if(m<score[i][j])
			{
				m=score[i][j];
				student=i+1;
				subject=j;
			}
		}
	}
	printf("50个分数中最高分对应的学生是第%d个，课程为",student);
	switch(subject)
	{
	case 0:printf("高数\n");break;
	case 1:printf("线代\n");break;
	case 2:printf("C语言\n");break;
	case 3:printf("大计基\n");break;
	case 4:printf("英语\n");break;
	}
}

void square(float score[][5])//第四小题
{
	float ave[10],a,x2=0,x=0;
	for(i=0;i<10;i++)
	{
		ave[i]=student_average(score,i);
		x2=x2+ave[i]*ave[i];
		x=x+ave[i];
	}
	a=x2/10-(x/10)*(x/10);
	printf("平均分方差为：%.2f\n",a);
}